/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package BD;

import Clases.Titular;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author Jorge
 */
public class ABM_Titular {
    

    
    public void ABM_Titular(){
    
    }
    
        public static boolean obtenerTitular(Titular titularBuscado, Integer documentoTitular){
        //Insertar query SQL
        Connection miConexion=Conector.GetConnection();
        String sql;
        ResultSet rs_titular;
        boolean existeTitular=false;
        
        // Capturamos los datos del titular para cargarlos a la instancia de la
        // clase que se pasa como parámetro.
        
        try{
            
            sql="SELECT tipo_doc, nombre, apellido, fecha_nacimiento, direccion, observaciones, tramitoLicComun, tramitoLicProfesional, gruposanguineo, factorRH, donanteOrgano FROM titular WHERE dni="+documentoTitular.toString();
            PreparedStatement estatuto_titular=miConexion.prepareStatement(sql);
            //estatuto.setInt(1,documentoTitular);
            
            rs_titular=estatuto_titular.executeQuery();
            
            if(rs_titular.next()==true){
                existeTitular=true;
                titularBuscado.setTipoDoc(rs_titular.getString("tipo_doc"));
                titularBuscado.setNombre(rs_titular.getString("nombre"));
                titularBuscado.setApellido(rs_titular.getString("apellido"));
                titularBuscado.setDireccion(rs_titular.getString("direccion"));
                titularBuscado.setFechaNacimiento(rs_titular.getDate("fecha_nacimiento"));
                titularBuscado.setObservaciones(rs_titular.getString("observaciones"));
                titularBuscado.setTramitoLicComun(rs_titular.getInt("tramitoLicComun"));
                titularBuscado.setTramitoLicProfesional(rs_titular.getInt("tramitoLicProfesional"));
                titularBuscado.setNumeroDoc(documentoTitular);
                titularBuscado.setFactorSanguineo(rs_titular.getString("factorRH"));
                titularBuscado.setGrupoSanguineo(rs_titular.getString("gruposanguineo"));
                titularBuscado.setDonanteOrganos(rs_titular.getString("donanteOrgano"));
                
                estatuto_titular.close();
                return existeTitular;                
            }
            else{
                JOptionPane.showMessageDialog(null, "El titular buscado no existe.");
                estatuto_titular.close();
                return existeTitular;
            }
        }
        catch (SQLException e) {
            System.out.println(e.getMessage());
            JOptionPane.showMessageDialog(null, "Excepción al consultar la base de datos.");
            return existeTitular;
        }
    }
    
    public static void marcarComoConductorProfesional(Integer documentoTitular){
            
        Connection miConexion;
        miConexion=Conector.GetConnection();
        String sql;
        
        try{
            sql="UPDATE titular SET tramitoLicProfesional=1 WHERE dni=" + documentoTitular.toString();
            PreparedStatement estatuto=miConexion.prepareStatement(sql);
            estatuto.executeUpdate();
            estatuto.close();
        }
        catch (SQLException e) {
            System.out.println(e.getMessage());
            JOptionPane.showMessageDialog(null, "Excepción al actualizar la base de datos.");
        }
    }
    
    public static void marcarComoConductor(Integer documentoTitular){
        Connection miConexion=Conector.GetConnection();
        String sql;
        
        try{
            sql="UPDATE titular SET tramitolicComun=1 WHERE dni=" + documentoTitular.toString();
            PreparedStatement estatuto= miConexion.prepareStatement(sql);
            estatuto.executeUpdate();
            estatuto.close();
        }
        catch (SQLException e) {
            System.out.println(e.getMessage());
            JOptionPane.showMessageDialog(null, "Excepción al actualizar la base de datos.");
        }
    }
    
    public void crear_titular(Titular titu)
    {
        Connection miConexion=Conector.GetConnection();
        String sql;
        
        try {
            //Statement estatuto = Conector.GetConnection().createStatement();
            sql="INSERT INTO titular (nombre, apellido, direccion, tipo_doc, dni, fecha_nacimiento, observaciones, tramitoLicComun, tramitoLicProfesional, grupoSanguineo, factorRH, donanteOrgano, claseLicenciaSolicitada) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement estatuto=miConexion.prepareStatement(sql);

            estatuto.setString(1,titu.getNombre() );
            estatuto.setString(2,titu.getApellido() );
            estatuto.setString(3,titu.getDireccion() );
            estatuto.setString(4,titu.getTipoDoc());
            estatuto.setInt(5, (int) titu.getNumeroDoc());
            estatuto.setDate(6,   new java.sql.Date( titu.getFechaNacimiento().getTime())  );
            estatuto.setString(7, "");
            estatuto.setInt(8, titu.getTramitoLicComun());
            estatuto.setInt(9, titu.getTramitoLicProfesional());
            estatuto.setString(10, titu.getGrupoSanguineo());
            estatuto.setString(11, titu.getFactorSanguineo());
            estatuto.setString(12, titu.getDonanteOrganos());
            estatuto.setString(13, titu.getLicenciaSolicitada());
            estatuto.executeUpdate();

            JOptionPane.showMessageDialog(null, "Se ha registrado Exitosamente","Información",JOptionPane.INFORMATION_MESSAGE);
            estatuto.close();

        } 
        catch (SQLException e) {
            System.out.println(e.getMessage());
            JOptionPane.showMessageDialog(null, "No se Registro el titular");
        }
    }

     
    public void modificar_titular(Titular titu){

        Connection miConexion=Conector.GetConnection();
        String sql;

        if(miConexion!=null)
            JOptionPane.showMessageDialog(null, "Conexión Realizada Correctamente");

        try {
        //Statement estatuto = Conector.GetConnection().createStatement();
        sql="UPDATE titular nombre=?, apellido=?, direccion=?, tipo_doc=?, dni=?, fecha_nacimiento=? "+"WHERE id=?";
        PreparedStatement estatuto=miConexion.prepareStatement(sql);

        estatuto.setString(1,titu.getNombre() );
        estatuto.setString(2,titu.getApellido() );
        estatuto.setString(3,titu.getDireccion() );
        estatuto.setString(4,titu.getTipoDoc());
        estatuto.setInt(5, (int) titu.getNumeroDoc());
        estatuto.setDate(6,   new java.sql.Date( titu.getFechaNacimiento().getTime())  );
        estatuto.setInt(7, (int) titu.getNumeroDoc());
        estatuto.executeUpdate();


        JOptionPane.showMessageDialog(null, "Se ha Modificado Exitosamente","Información",JOptionPane.INFORMATION_MESSAGE);
        estatuto.close();

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        JOptionPane.showMessageDialog(null, "No se Modifico el titular");
        }

    }
}
